使用Python Selenium访问HTML中的嵌套元素

时间:2017-09-21 03:35:31

标签: python html selenium

我正在尝试使用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函数也会抛出此错误。 我没有在代码中等待任何时间。

任何想法如何进一步发展?

2 个答案:

答案 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