Python硒,为什么我的文本可以'不被WebDriverWait.until定位?文本可以通过page_sou



我正试图等待网页完全加载之前,我继续寻找一些元素。

1。如果我做

EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'my text 1234567')]"))

我将得到

<selenium.webdriver.support.expected_conditions.presence_of_element_located at 0x143304641c0>

这意味着我的文本找到了吗?

2。但是如果我做

WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'my text 1234567')]")))

我将得到

selenium.common.exceptions.TimeoutException: Message: 

3。然后我选中

driver.find_elements_by_xpath("//*[contains(text(), 'my text 1234567')]")
Out[55]: []

4。如果我做

driver.page_source.find('my text 1234567')
Out[64]: 971

我很困惑。为什么会发生这种情况?我应该修改By.XPATH吗?




问题解决以下答案

改变"//*[包含文本(), 'my text 1234567')]">

"//*[包含, 'my text 1234567')]">

为什么这里的text()不起作用?

我不确定你想要的结果是什么。如果您只想返回文本"1934年证券交易法",这是一个选项:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
path = "YOUR PATH HEREchromedriver.exe"
driver = webdriver.Chrome(path)
wait = WebDriverWait(driver, 5)
driver.get("https://www.sec.gov/Archives/edgar/data/896397/000089639701500011/seh10q2qtr2001.htm")
wait.until(EC.presence_of_element_located((By.TAG_NAME, "p")))
paragraph = driver.find_elements_by_tag_name("p")[1].text
line = paragraph.split("n")[3]
result = line[60:]
print(result)

相反,如果您想返回第一段,其中"1934年证券交易法";如果存在,这是一个选项,语法与您使用的类似:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
path = "YOUR PATH HEREchromedriver.exe"
driver = webdriver.Chrome(path)
wait = WebDriverWait(driver, 5)
driver.get("https://www.sec.gov/Archives/edgar/data/896397/000089639701500011/seh10q2qtr2001.htm")
paragraph = wait.until(EC.presence_of_element_located((By.XPATH, "//p[contains(.,'Securities Exchange Act of 1934')]")))
print(paragraph.text)

最新更新