我是 Selenium 新手。我在 OSX 上使用 anaconda 的 Selenium 3.141。我的Chrome版本是71.0,Chromedriver版本是2.45。我的目标是使用 Selenium 单击网页上带有“接受”的按钮。我可以使用可执行文件实例化 webdriver 对象,并使用它来加载有问题的页面。然后我等了20秒。这是下一个失败的部分。代码无法找到必须单击的元素。附件是与各个级别和子级别的按钮相关的元素的两张图像,其中突出显示了检查后的部分。我尝试过诸如
之类的变体accept_button = driver.find_element_by_class_name('flex-x.static.h- center.v-center.bt-button.filled')
和
accept_button = driver.find_element_by_class_name('Accept')
还有其他一些无济于事。请帮忙。
按钮框架:
接受矩形:
最佳答案
所需的元素是 Angular元素,因此要定位/单击,您必须引发 WebDriverWait 才能使 元素可单击,并且您可以使用以下解决方案之一:
使用
CSS_SELECTOR
:accept_button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "bt-button.Aceept.ng-isolate-scope[mutable-label='prelogin.translations.Accept']")))
使用
XPATH
:accept_button = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//bt-button[@class='Aceept ng-isolate-scope focused' and @mutable-label='prelogin.translations.Accept']")))
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
关于python - 如何使用 Selenium 和 Chromedriver 查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53952972/