Excel 如何在Selenium Basic中通过FindElementByXPath根据HTML定位元素
我正在编写一个VBA代码来登录网页,并将一些信息加载到excel工作表中 我是硒的新手。我已经得到了正确的登录部分,但现在我需要在一个元素中单击,我不断得到错误 我需要点击Excel 如何在Selenium Basic中通过FindElementByXPath根据HTML定位元素,excel,vba,selenium,selenium-webdriver,xpath,Excel,Vba,Selenium,Selenium Webdriver,Xpath,我正在编写一个VBA代码来登录网页,并将一些信息加载到excel工作表中 我是硒的新手。我已经得到了正确的登录部分,但现在我需要在一个元素中单击,我不断得到错误 我需要点击公司2按钮 到目前为止,我得到的是: bot.FindElementByXPath("//input[@value=""Company 1""]").Click 输出NoSuchElementError bot.FindElementByXPath("//input[@value=""Company 2""]").Clic
公司2
按钮
到目前为止,我得到的是:
bot.FindElementByXPath("//input[@value=""Company 1""]").Click
输出NoSuchElementError
bot.FindElementByXPath("//input[@value=""Company 2""]").Click
输出ElementNotVisible
我不知道我做错了什么,我认为第一个被隐藏的输入与此有关。希望任何人都能帮助我。XPath可能不正确。请尝试以下语法:
FindElementByXPath("//input[@value='Company 1']")
首先,尽可能使用CSS选择器。它们更容易处理。 现在,如果您正在使用CSS选择器,请尝试使用以下内容查找第二个按钮
input[value=“Company 2”]
有关此选择器的详细信息,请查看您可以使用任何xpath,在第一次查看中,我发现您的xpath不正确,请尝试以下操作:
//input[@type='button'][@value='Company 2']
//input[@type='button'&& @value='Company 2']
//input[@role='button'][@value='Company 2']
您还可以使用findelelements()
存储所有按钮,并使用if-else根据您共享的HTML提取公司2按钮,以调用所需元素上的click()
,您可以使用以下解决方案:
- 要单击文本为公司1的元素,请执行以下操作:
bot.FindElementByXPath("//input[@class='btn_empresa ui-button ui-widget ui-state-default ui-corner-all' and @value='Company 1']").Click
bot.FindElementByXPath("//input[@class='btn_empresa ui-button ui-widget ui-state-default ui-corner-all' and @value='Company 2']").Click
- 要单击文本为公司2的元素,请执行以下操作:
bot.FindElementByXPath("//input[@class='btn_empresa ui-button ui-widget ui-state-default ui-corner-all' and @value='Company 1']").Click
bot.FindElementByXPath("//input[@class='btn_empresa ui-button ui-widget ui-state-default ui-corner-all' and @value='Company 2']").Click
Company_1 = bot.find_element_by_xpath("//input[@value='Company 1']")
Company_1.click()
Company_2 = bot.find_element_by_xpath("//input[@value='Company 2']")
Company_2.click()
并像其他人提到的那样使用“”引号更改语法。可能会帮助您知道,在大多数情况下,您也可以使用
ByCss
,在这种情况下,您可以使用:
bot.FindElementByCss("input[value='Company 1']").Click
那又好又短
这是
输入[value='Company 1']
。这表示查找具有input
标记的元素,该标记具有value
属性,其值为'Company 1'
选择器不太容易损坏,因为它们非常具体。你的那个看起来很有前途。嗨@SIM。很高兴见到你。有点简单,但你可能会享受以下5分钟:32级。看看你是怎么得分的:-)只要先看右边-我忘了看!嗨,QHarr,不幸的是,这并没有解决问题。我认为这与之前的输入被隐藏有关input[value='Company 1']->NuSuchElementError
input[value='Company 2']->ElementNotVisibleError
您可以尝试循环直到可见吗?可能超出了等待时间?我在那条线前有10秒的时间。我可以看到按钮,但我不断得到元素NotVisibleError
——是否有可能隐藏的第一个输入与此有关?嗨,rajeshkt,谢谢。但我总是收到同样的错误嗨!在这两种情况下,我都没有接触过EnterRor。我认为这与第一个输入是hiddenHi Grim有关,我如何判断按钮是否是从javascript创建的?如果有的话,我有没有办法点击它们?