我正在编写VBA代码以登录到网页并加载我在excel工作表中拥有的一些信息。
我是硒新手。我已经正确完成了登录部分,但是现在我需要单击一个元素,并且不断出现错误。
我需要点击Company 2
按钮。
这是我到目前为止所得到的:
bot.FindElementByXPath("//input[@value=""Company 1""]").Click
输出NoSuchElementError
bot.FindElementByXPath("//input[@value=""Company 2""]").Click
输出ElementNotVisible
我不知道我在做什么错,我认为隐藏的第一个输入有一些事情要做。希望任何人都能帮助我。
答案 0 :(得分:1)
可能会帮助您了解在大多数情况下也可以使用ByCss
,在这种情况下,您可以使用:
bot.FindElementByCss("input[value='Company 1']").Click
那又好又短。
CSS selector是input[value='Company 1']
。这说带有input
标签的find元素具有属性value
,值为'Company 1'
。
答案 1 :(得分:0)
XPath可能不正确。请尝试以下语法:
FindElementByXPath("//input[@value='Company 1']")
答案 2 :(得分:0)
首先,尽可能使用CSS选择器。它们更容易处理。 现在,如果您使用的是CSS选择器,请尝试使用类似的
来查找第二个按钮 input[value="Company 2"]
有关此选择器的更多信息,请查看https://www.w3schools.com/cssref/sel_attribute_value.asp
答案 3 :(得分:0)
您可以使用任何xpath,乍一看我发现您的xpath不正确,请尝试以下操作:
//input[@type='button'][@value='Company 2']
//input[@type='button'&& @value='Company 2']
//input[@role='button'][@value='Company 2']
您还可以使用findelements()
存储所有按钮,并使用其他方式提取公司2按钮
答案 4 :(得分:0)
根据您共享的 HTML ,可以在所需元素上调用click()
,您可以使用以下解决方案:
要单击文本为 Company 1 的元素:
bot.FindElementByXPath("//input[@class='btn_empresa ui-button ui-widget ui-state-default ui-corner-all' and @value='Company 1']").Click
要单击文本为 Company 2 的元素:
bot.FindElementByXPath("//input[@class='btn_empresa ui-button ui-widget ui-state-default ui-corner-all' and @value='Company 2']").Click
答案 5 :(得分:0)
您是否尝试过右键单击检查中的HTML并转到“复制”>“复制XPath”?那可能会给你一些不同的东西。也许按钮是用Javascript创建的,所以WebDriver实际上看不到它们?
或尝试
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()
并像其他人提到的那样用''引号更改语法。