我正试图等待网页完全加载之前,我继续寻找一些元素。
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)