使用Python / Selenium选择单选按钮

时间:2018-02-25 02:09:41

标签: python selenium radio-button

已经搜索了以前的一些问题并且无法纠正 - 我是一个完整的新手,所以请原谅无知......试图选择第三个' Radio'页面上的按钮使用以下内容:

from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys

import smtplib
import time

date = time.strftime("%d %b %Y" + ", " + "%H:%M%p")
print (time.strftime("%d %b %Y" + ", " + "%H:%M%p"))

driver=webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.water.nsw.gov.au/water-licensing/registers")
driver.implicitly_wait(10)
driver.find_element_by_xpath('// [@id="wizard_tabs"]/div/div[1]/div/ul/li[3]/input').click()

结果是:

  

"消息:没有这样的元素:无法找到元素:    {"方法":"的xpath""选择器":" // [@ ID =#34; wizard_tabs"] / DIV / DIV [1] / DIV / UL /锂[3] /输入"}"

已经尝试等待更长时间(500),但它没有任何作用。当我检查'打开的页面,xpath仍然是相同的。我知道那里有一个简单的答案,我希望你的互联网传说可以提供帮助!

1 个答案:

答案 0 :(得分:1)

一些程序问题:

  1. 当您可以对该页面上的唯一元素执行显式等待(WebdriverWait.until)时,隐式等待是没有意义的。

  2. 如果webdriver说元素不在那里,那么你要找的定位器就不存在了,至少不是它实际看的位置。 iframes可以让你认为你正在寻找一个真正的webdriver正在寻找另一个地方。

  3. 在您怀疑某些内容关闭的那一刻,始终在浏览器中确认您的定位器。或者每次都会节省您运行脚本,启动浏览器以及每次修补时加载页面所花费的所有时间。转到浏览器的开发工具,单击控制台选项卡,然后在此处键入$$(" css选择器")或$ x(" xpath here")并按Enter键。如果返回了一个元素,请单击箭头将其展开并将鼠标悬停在显示的内容上。它是否突出显示页面上所需的元素?然后,只有你使用一个好的定位器。

  4. 如果开发工具控制台说您的定位器很好,但是python仍然无法找到它 - 即使在WebdriverWait之后 - 找到窃取您焦点的iframe并使用webdriver.switch_to(iframe_name)来用你的元素将你的焦点偷回到iframe。

  5. 练习不那么脆弱的XPATH。它们可以很轻松地进行手术和阅读。我愿意打赌你的输入有某些东西我们可以直接找到它。如果不是,则层次结构中正上方或下方的元素可能会这样做。发布您想要的元素的HTML,我们肯定知道。

  6. 处理iframe问题:

    iframe_element = driver.find_element_by_css_selector("iframe[name='name_of_the_iframe']")
    driver.switch_to.frame(iframe_element)
    # Now find your element
    
相关问题