我试着用webdriver登录两个网站,A和B。但是当我用同样的方式"find_element_by_css_selector“时,B在A工作时不工作。我关闭了javascript,发现B的登录部分消失了。
A的html:
<button type="submit" class="width-35 pull-right btn btn-sm btn-primary">
<i class="ace-icon fa fa-key"></i>
<span class="bigger-110">Login</span>
</button>A的代码运行良好:
submit=driver.find_element_by_css_selector(".width-35.pull-right.btn.btn-sm.btn-primary").click()B的html:
<a class="login-btn" href="javascript:;" data-bind="click: loginSection.loginClick">
<span class="btn-text">Login</span>
</a>B代码不起作用:
submit=driver.find_element_by_css_selector("a.login-btn > span.btn-text").click()错误说:
ElementNotVisibleException: Message: element not visible我之前发布了另一个问题,selector,有人建议我使用"find_elements_by_link_text“,它可以工作,但它只适用于那个问题。我仍然想知道如何解决这个问题。谢谢!
更新:
Link=WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='login-btn'][@class='login-btn']"))).click()错误:
TimeoutException: Message: 发布于 2018-02-05 02:02:36
我使用了time.sleep()延迟方法,它实际上在我的一端起作用。
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.easyauction.com.tw/index.html')
########
# Username and password go here
########
time.sleep(10)
driver.find_element_by_css_selector('#IndexLogin > div > form > a.login-btn > span').click()
driver.quit()发布于 2018-02-05 06:04:49
虽然你已经得到了一个公认的答案,但我希望你知道问题的根源
有两个具有相同类名的链接:第一个是隐藏的。您可以使用len(driver.find_elements_by_class_name("login-btn"))检查它。
这就是为什么你的代码
Link=WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='login-btn'][@class='login-btn']"))).click()提供TimeOutException -隐藏元素不能单击。
您可以通过指定按钮的索引来修复它:
Link = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "(//a[@class='login-btn'])[2]")))
Link.click()或使用链接文本搜索:
Link = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "確定登入")))
Link.click()注意,search文本将跳过隐藏链接,只处理可见的链接。
https://stackoverflow.com/questions/48614856
复制相似问题