首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python/Selenium选择Radio

使用Python/Selenium选择Radio
EN

Stack Overflow用户
提问于 2018-02-25 02:09:41
回答 1查看 180关注 0票数 1

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

代码语言:javascript
复制
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”,"selector":"//@id="wizard_tabs"/div/div1/div/ul/li3/input"}“

试着等更长的时间(500),但没什么区别。当我“检查”打开的页面时,xpath仍然是一样的。我知道有一个简单的答案,我希望你们的网络传说可以帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-25 02:36:28

几个程序问题:

  1. 当您只对页面上的唯一元素执行显式等待(WebdriverWait.until)时,隐式等待是没有意义的。
  2. 如果webdriver说元素不在那里,那么您正在寻找的定位器就不在那里,至少它并不在实际查找的位置。iframes可以让你认为你在寻找一个地方,而真正的webdriver正在寻找另一个地方。
  3. 当你怀疑有什么东西关闭时,一定要在浏览器中确认你的定位器。或者每一次,它都会节省您运行脚本、启动浏览器和每次修补时加载页面的所有时间。转到浏览器的dev tools,单击console选项卡,键入$$("css选择器在这里“)或$x("xpath”)并按enter。如果返回一个元素,请单击箭头展开该元素并悬停在显示内容上。它是否高亮显示页面上所需的元素?只有到那时你才会使用一个好的定位器。
  4. 如果dev工具控制台说您的定位器很好,但是python仍然找不到它--即使是在WebdriverWait之后--找到窃取焦点的iframe,并使用webdriver.switch_to(iframe_name)将您的焦点与元素一起窃取回iframe。
  5. 练习不那么脆的XPATHs。他们可以是相当外科和可读性,以最小的努力。我敢打赌你的投入有我们可以直接找到的东西。如果没有,则层次结构中位于其上方或下面的元素很可能存在。发布您想要的元素的HTML,我们将肯定地知道。

要处理iframe问题:

代码语言:javascript
复制
iframe_element = driver.find_element_by_css_selector("iframe[name='name_of_the_iframe']")
driver.switch_to.frame(iframe_element)
# Now find your element
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48969578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档