![](/img/trans.png)
[英]How to locate the element as per the html provided through Selenium, Python and Xpath
[英]How to locate a dynamic element through Selenium and Python
我在win10和firefox中使用python和Selenium Webdriver编写了一个爬虫。
我在以下位置无法理解该页面:
https://irs.thsrc.com.tw/IMINT/
该页面有一个弹出消息框。 弹出消息框中的链接的xpath为:
//html/body/div[2]/form[1]/div[2]/div[1]/div[1]/div[1]/div[1]/span[1]/a[1]
selenium webdriver返回的用于Firefox的html源文件不包括该消息框的标记。 因此,我发送r = requests.get('https://irs.thsrc.com.tw/IMIT/')
再次获取html源文档,然后在html中获取标签。
在获得带有弹出消息框标签的新html源文档之后,我注意到该消息框的style:"display:none"
。
我不确定这如何影响webdriver的返回值。
应该禁用所有可操作的标签。
但是webdriver告诉我,在我找到它们并带有xpath的tag元素后,它们都已显示并启用。
当我使用webdriver在上面的xpath中在弹出消息框中找到链接时,webdriver说找不到该元素。 在这种情况下,我无法使用webdriver在弹出的消息框中单击a-链接。 有谁知道如何使WebDriver返回标签元素的真实状态? 例如,我希望webdriver告诉我所有元素都被禁用,除了a-link和弹出消息框中的确认按钮。
任何答案和建议将不胜感激。
您所指的弹出消息框将使您了解Cookie分析和其他跟踪技术,并且您需要在元素上click()
带有文本的click()
,因为我同意为element_to_be_clickable()
诱导WebDriverWait ,并且您可以使用以下解决方案:
使用CSS_SELECTOR
:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.button_main#btn-confirm"))).click()
使用XPATH
:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='button_main' and @id='btn-confirm']"))).click()
注意 :您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.