我正在尝试使用Selenium - Chrome在Chrome上自动登录网站(http://www.phptravels.net/)。这是一个用于自动化教程的开放式网站。
我正在尝试点击一个元素来打开一个下拉菜单(顶部导航栏中的“我的帐户”按钮),这样我就可以选择登录并将我重定向到登录页面。
HTML嵌套了许多div和ul / li标记。
我尝试了各种代码,但未能取得很大进展。
driver.find_element_by_id('li_myaccount').click()
driver.find_element_by_link_text(' Login').click()
driver.find_element_by_xpath("//*[@id='li_myaccount']/ul/li[1]/a").click()
这些是我尝试过的一些例子。所有这些都失败了,错误“元素不可见”。
我如何找到这些元素?即使是xpath函数也会抛出此错误。 我没有在代码中等待任何时间。
任何想法如何进一步发展?
答案 0 :(得分:1)
当您尝试查找感兴趣的元素时,您可能遇到了未加载页面的问题。您应该使用WebDriverWait类来等待页面中存在给定元素。
改编自文档:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ReadTextFile()
Dim TempText As String
Dim TextPath = "C:\test.html"
TempText = ReadTextFile(TextPath)
TempText = TempText.Replace("#Name#", TextBox1.Text)
WebBrowser1.Navigate("C:\test.html")
End Sub
Public Function ReadTextFile()
Dim TempString As String
Dim TextFileName As String = "C:\test.html"
Dim StreamToDisplay As System.IO.StreamReader
StreamToDisplay = New System.IO.StreamReader(TextFileName)
TempString = StreamToDisplay.ReadToEnd
StreamToDisplay.Close()
Return TempString
End Function
End Class
答案 1 :(得分:1)
希望此代码有所帮助:
from selenium import webdriver
from selenium.webdriver.common.by import By
url="http://www.phptravels.net/"
d=webdriver.Chrome()
d.maximize_window()
d.get(url)
d.find_element(By.LINK_TEXT,'MY ACCOUNT').click()
d.find_element(By.LINK_TEXT,'Login').click()
d.find_element(By.NAME,"username").send_keys("Test")
d.find_element(By.NAME,"password").send_keys("Test")
d.find_element(By.XPATH,"//button[text()='Login']").click()
使用html页面上最好的定位器,这样就不需要为简单的操作创建css的xpath