【问题标题】:Select Radio Button using Python/Selenium使用 Python/Selenium 选择单选按钮
【发布时间】:2018-08-04 19:00:56
【问题描述】:

已经搜索了之前的一些问题,但无法纠正 - 我完全是新手,所以请原谅我的无知...尝试使用页面上的第三个“收音机”按钮以下:

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()

结果是:

“消息:没有这样的元素:无法找到元素: {"method":"xpath","selector":"//[@id="wizard_tabs"]/div/div[1]/div/ul/li[3]/input"}"

已尝试等待更长的时间 (500),但这并没有什么不同。当我“检查”已打开的页面时,xpath 仍然是相同的。我知道有一个简单的答案,我希望你的互联网传奇可以提供帮助!

【问题讨论】:

    标签: python selenium radio-button


    【解决方案1】:

    几个顺序:

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

    2. 如果 webdriver 说该元素不存在,那么您要查找的定位器不存在,至少不在它实际查找的位置。 iframe 可以让您认为您正在寻找一个地方,而实际上 webdriver 正在寻找另一个地方。

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

    4. 如果开发工具控制台显示您的定位器很好,但 python 仍然找不到它 - 即使在 WebdriverWait 之后 - 找到正在窃取您的焦点的 iframe 并使用 webdriver.switch_to(iframe_name) 来窃取您的使用您的元素重新关注 iframe。

    5. 练习不太脆弱的 XPATH。它们可以非常具有外科手术性和可读性,并且只需最少的努力。我愿意打赌您的输入有一些东西我们可以用来直接找到它。如果不是,则层次结构中其正上方或下方的元素可能会这样做。发布所需元素的 HTML,我们肯定会知道。

    处理 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
    

    【讨论】:

    • 蚜虫 - 谢谢你这么快就回来找我。如前所述,我是新手(第三次尝试编写脚本),所以会尽力回答......!当我复制外部 HTML 时,它会返回: 所有数据似乎都保存在一个名为“最大可收获权计算器”我应该在此处复制并显示 iFrame 的整个外部 HTML 吗?
    • 蚜虫 - 再次感谢您的帮助,让它按照我现在想要的方式工作。我正在努力使用多个网站生成自动报告,您在此处的反馈将在未来的情况下派上用场。不确定我是否完全理解这一切,但它会随着练习和时间而来!
    猜你喜欢
    • 2021-03-31
    • 2023-01-19
    • 1970-01-01
    • 2014-02-14
    • 2017-08-02
    • 2015-07-22
    • 2019-05-04
    • 2014-04-27
    • 1970-01-01
    相关资源
    最近更新 更多