我有一个特定的登录按钮,无法使用Python Firefox Selenium访问。这是此网页上的登录按钮:https://schalter.asvz.ch/tn/lessons/39616
我正在运行Ubuntu 16.04,Python 3.5.2,Firefox 65.0和Selenium 3.141。
我尝试了在堆栈溢出中找到的几种方法的组合,包括:
login = driver.find_element_by_xpath("//*[@class='btn btn-default ng-star-inserted']")
login = driver.find_element_by_xpath("//button[@class='btn btn-default ng-star-inserted']")
login = driver.find_element_by_class_name('btn btn-default ng-star-inserted')
login = driver.find_element_by_xpath("//*[contains(., 'Login')]")
login = driver.find_element_by_name('app-lessons-enrollment-button')
但是他们都不起作用。总是导致:
NoSuchElementException:消息:无法找到元素: // * [@@ class ='btn btn-default ng-star-inserted']
此按钮有何不同?我该如何运作?
答案 0 :(得分:1)
此错误消息...
NoSuchElementException: Message: Unable to locate element: //*[@class='btn btn-default ng-star-inserted']
...表示 ChromeDriver 无法通过您使用的定位器找到所需的元素。
实际上,您的前两(2)个定位器是完美的。
但是,所需的元素是Link Here元素,因此要定位该元素,必须诱使 WebDriverWait 使元素可点击,并且可以使用以下任一Angular:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-default.ng-star-inserted[title='Login']"))).click()
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-default ng-star-inserted' and @title='Login']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
答案 1 :(得分:0)
尝试以下选项。
Login=driver.find_element_by_css_selector("button.ng-star-inserted")
或者尝试这个
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'button.ng-star-inserted'))).click()
对于选项2,您需要进行以下导入。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
答案 2 :(得分:0)
尝试以下xpath:
xpath = "//button[@title='Login']"
element = driver.find_element_by_xpath(xpath);
element.click();
答案 3 :(得分:0)
跟随xpath正常工作(使用selenium java测试)
//button[@title='Login']
我能够找到并单击按钮。