Selenium webdriver 在有两个按钮的页面上单击错误的按钮
我正在使用SeleniumWebDriver测试网页。 该网页有两个按钮,一个按钮带有按钮文本“Zoeken”,另一个按钮带有按钮文本“Verstuur”。我想通过使用XPath或CssSelector和以下代码单击按钮文本为“Verstuur”的按钮:Selenium webdriver 在有两个按钮的页面上单击错误的按钮,selenium-webdriver,Selenium Webdriver,我正在使用SeleniumWebDriver测试网页。 该网页有两个按钮,一个按钮带有按钮文本“Zoeken”,另一个按钮带有按钮文本“Verstuur”。我想通过使用XPath或CssSelector和以下代码单击按钮文本为“Verstuur”的按钮: driver.FindElement(By.XPath("/html/body/div[3]/div[2]/div[2]/form/fieldset/a/span")).Click(); driver.FindElement(By.CssSel
driver.FindElement(By.XPath("/html/body/div[3]/div[2]/div[2]/form/fieldset/a/span")).Click();
driver.FindElement(By.CssSelector("fieldset.contact_form > a.button > span.button_center")).Click();
但使用上述代码行中的任意一行,在按钮上单击文本“Zoeken”
此按钮具有非常类似的CssSelector和XPath:
fieldset.header_search a.button span.button_center
/html/body/div[3]/div/form/fieldset/a/span[2]
有人知道如何解决这个问题吗?xpath for ZOEKEN
/html/body/div[3]/div/form/fieldset/a/span[2]
VERSTUUR的xpath/html/body/div[3]/div[2]/div[2]/form/fieldset/a/span[2]
尝试以下操作:
driver.FindElement(By.XPath("//span[text()='Verstuur']")).click();
编辑:
我认为你想学习Selenium,这就是你使用第三方网站的原因。如果您真的想学习Selenium,请找到一些可自动化的开源应用程序。这是一个很好的自动化应用程序-
下载最新版本并安装
在这里查找有关网站和selenium内容的更多信息。太好了
用CSS选择器试试这个,告诉我它是否有效。 对于“verstuur”:
By.cssSelector(“div.content表单a.button”)
解决方案:
好的,我发现了你的问题。您的xpath很好,但是现在,您在单击submit时的操作将是第一个表单,因此表单将使用“Zoeken”
试试这个:
onclick="document.forms["form"].submit();" // submit the 2nd form, the good one !
//or
onclick="document.forms[1].submit();"
证明:Zoeken:
driver.findElement(By.xpath(“//div[1]/form/fieldset/a/span[2]”)。单击()代码>
Verstuur:driver.findElement(By.xpath(“//div[2]/form/fieldset/a/span[2]”)。单击()代码>
使用xpath很容易,但速度很慢。嗨,HemChe,我为两个按钮都提供了xpath。尽管它们不同,但找到并单击了按钮“Zoeken”。我现在尝试使用driver.FindElement(By.CssSelector(“span:contains('Verstuur'))查找元素。单击();但随后我收到错误消息“无法找到css选择器==span:contains('Verstuur')的元素”。你知道有什么问题吗?我试图查找的元素的html是VerstuUrunfortuly,但它不起作用,仍然单击了另一个按钮,按钮文本为“Zoeken”。现在,我尝试使用driver.findelelement(By.CssSelector(“span:contains('Verstuur'))查找元素);但随后我收到错误消息“无法找到css选择器==span:contains('Verstuur')的元素”。你知道有什么问题吗?我试图查找的元素的html是VerstuurTry driver.FindElement(By.XPath(“//form[1]//span[text()='Verstuur']);嗨,我试过上面的方法,但是仍然点击了按钮文本为“Zoeken”的按钮。这里是代码行:driver.findelelement(By.CssSelector(“div.content form a.button”)).Click();因此,我建议您通过.cssSelector(“div.content form[name='form']a.button”)尝试这样做。您好,也尝试了这样做,但仍然单击了另一个按钮。似乎在页面上找到的第一个按钮被单击,而CssSelector被忽略。您是否尝试一步一步地捕捉元素?xpath(“//form[@name='form']”)是否存在?xpath(“//form[@name='form']/a”)是否存在?每次都要深入一点吗?我已经用以下所有XPath运行了测试:driver.FindElement(By.XPath(“//form[@name='form']);FindElement(By.XPath(“//form[@name='form']/fieldset”);FindElement(By.XPath(“//form[@name='form']/fieldset/a”);FindElement(By.XPath(“//form[@name='form']/fieldset/a/span[2]”);一切都很好。但在将Click()添加到最后一个xpath时,仍然会单击另一个按钮“Zoeken”。按钮“Zoeken”的相对xpath除了表单的名称之外是相同的。似乎表格的名称没有被考虑在内
onclick="document.forms["form"].submit();" // submit the 2nd form, the good one !
//or
onclick="document.forms[1].submit();"