无法定位 Python 中的元素 - Selenium
Cannot target the element in Python - Selenium
我从 Python - Selenium 开始,我无法定位登录网站中的元素。我尝试了很多针对此按钮的选项,但没有任何选项有效(class 名称、css 选择器、ID、名称..)。当我跳过这一步并通过 url 手动进入下一页时,查找、聚焦、向元素发送键并单击 "Next" 按钮没有问题,但是这个 "welcome" 登录按钮不能完全瞄准。
使用函数 "driver.find_element_by_XXX".
例如:
"driver.find_element_by_class_name("登录框操作").click()"
请问我错在哪里了?
非常感谢,
问候大卫
<div class="login-box-actions">
<a style="cursor: pointer" ng-click="confirmLogin()" class="btn btn-primary btn-block btn-flat ng-binding">Login</a>
</div>
您可以尝试使用不同的标识符来查找元素。硒支持:
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
您需要点击 <a>
元素而不是 div:
login_button = driver.find_element_by_xpath("//a[text()='Login']")
login_button.click()
可能会因为找不到元素而失败。
为此,您必须等待元素加载并可点击。
参考下面的例子,等待元素可点击
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 20).until(EC.element_to_be_clickable(
(By.CSS_SELECTOR, "btn btn-primary btn-block btn-flat ng-binding"))).click()
我从 Python - Selenium 开始,我无法定位登录网站中的元素。我尝试了很多针对此按钮的选项,但没有任何选项有效(class 名称、css 选择器、ID、名称..)。当我跳过这一步并通过 url 手动进入下一页时,查找、聚焦、向元素发送键并单击 "Next" 按钮没有问题,但是这个 "welcome" 登录按钮不能完全瞄准。 使用函数 "driver.find_element_by_XXX".
例如: "driver.find_element_by_class_name("登录框操作").click()" 请问我错在哪里了?
非常感谢, 问候大卫
<div class="login-box-actions">
<a style="cursor: pointer" ng-click="confirmLogin()" class="btn btn-primary btn-block btn-flat ng-binding">Login</a>
</div>
您可以尝试使用不同的标识符来查找元素。硒支持:
find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_element_by_tag_name find_element_by_class_name find_element_by_css_selector
您需要点击 <a>
元素而不是 div:
login_button = driver.find_element_by_xpath("//a[text()='Login']")
login_button.click()
可能会因为找不到元素而失败。 为此,您必须等待元素加载并可点击。
参考下面的例子,等待元素可点击
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 20).until(EC.element_to_be_clickable(
(By.CSS_SELECTOR, "btn btn-primary btn-block btn-flat ng-binding"))).click()