selenium web驱动程序访问列表框值

2024-06-01 13:48:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在访问列表框值时遇到了SeleniumWeb驱动程序的问题。在

检查图像: enter image description here

enter image description here

我能够粘贴值和传递我想选择的列表的类名,基本上每次我都要选择列表中显示的第一个选项

 1   driver.get('https://my.maerskline.com/schedules/vessel')
 2   button = driver.find_element_by_id("s2id_b-vesselCode")   
 3   button.click()        
 4   button1 = driver.find_element_by_id("s2id_autogen1_search")
 5   button1.send_keys(Vessel_name)        
 6   button3 = driver.find_element_by_id("select2-results-dept-0 select2-result select2-result-selectable")
 7   button3.click()
 8   button2 = driver.find_element_by_id("schedulesByVesselSearchButton")
    button2.click()

第6行给出了下面的错误

^{pr2}$

你知道我怎么做吗?如果需要更多信息,请告诉我。谢谢

更新的代码

if Vessel_name != "":
        #driver.get('https://my.maerskline.com/vessels?searchTerm={0}'.format(Vessel_name))
        print(Vessel_name)

        driver.get('https://my.maerskline.com/schedules/vessel')
        button = driver.find_element_by_id("s2id_b-vesselCode")   
        button.click()        
        button1 = driver.find_element_by_id("s2id_autogen1_search")
        button1.send_keys(Vessel_name)       
        button3 =driver.find_element_by_css_selector("#select2-results-1>li:nth-child(1)")
        button3.click()
        #button2 = driver.find_element_by_id("schedulesByVesselSearchButton")
        #button2.click()
        try:



        soup = BeautifulSoup(driver.page_source)

Tags: nameidgetbydriverbuttonelementfind
3条回答

您正在调用find_element_by_id,但提供类名。您应该使用element_by_css_selector("#select2-results-1 > li:nth-child(2)")作为第二个选项。在

"#select2-results-1 > li:nth-child(1)" >> MAJESTIC   
"#select2-results-1 > li:nth-child(2)" >> MAJESTC MAERSK   
"#select2-results-1 > li:nth-child(3)" >> NORTHERN MAJESTC    

检查以下内容

^{pr2}$

检查此代码是否有效:

>>> driver.button = driver.find_element_by_id("s2id_b-vesselCode")
>>> button = driver.find_element_by_id("s2id_b-vesselCode")
>>> button.click()
>>> button1 = driver.find_element_by_id("s2id_autogen1_search")
>>> button1.send_keys(Vessel_name)
>>> button1.send_keys("majestic")
>>> button3 = driver.find_element_by_css_selector("#select2-results-1 > li:nth-child(2)")
>>> button3.click()
>>> button2 = driver.find_element_by_id("schedulesByVesselSearchButton")
>>> button2.click()
>>> driver.find_element_by_css_selector(".muted.scheduleVesselHeader").text
u'Port Terminal Arrival Voyage Departure'
>>> driver.find_element_by_css_selector("tbody > tr:nth-child(2)").text
u'Rotterdam\nAPM 2 Terminal Maasvlakte II 15 Jan 2017, 06:00 649W | 649W 17 Jan 2017, 05:00'

您应该根据元素的类名来定位元素。您提供的图像中的元素没有任何id

试试这个xpath:

//ul[@id='select2-results-1']/li[@‌​class='selec‌​t2-results-dept-0 select2-result select2-result-selectable select2-highlighted']

如果确定总是要选择第一个li,可以通过引用xpath的索引使其更加整洁:

^{pr2}$

由于这是一个下拉式的值,您应该用户选择类来标识web元素

您可以参考以下链接来解决此问题:

{a1}

相关问题 更多 >