Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Selenium在网页上查找元素_C#_Selenium_Xpath_Selenium Webdriver - Fatal编程技术网

C# 使用Selenium在网页上查找元素

C# 使用Selenium在网页上查找元素,c#,selenium,xpath,selenium-webdriver,C#,Selenium,Xpath,Selenium Webdriver,我有XPath /html/body/div[@id='page']/div[@id='page-inner']/div[@id='main-box']/div[@class='in1']/div[@id='content-and-context']/div[@id='content']/div[@class='under-bar']/table[@class='flights']/tbody/tr[@id='flight-932539']/td[2]: 但班机号码正在改变。我可以找到部分为X

我有
XPath

/html/body/div[@id='page']/div[@id='page-inner']/div[@id='main-box']/div[@class='in1']/div[@id='content-and-context']/div[@id='content']/div[@class='under-bar']/table[@class='flights']/tbody/tr[@id='flight-932539']/td[2]:
但班机号码正在改变。我可以找到部分为XPath的元素吗? 我使用
foreach()
并为每次飞行写入数据

这是html代码:


第一件事:不要使用绝对路径。即使html中最小的更改也会使路径无效,尤其是在动态应用程序中。您的
xpath
很容易被
//tr[@id='flight-932539']/td[2]

至于您的问题,您可以使用
contains()
作为部分id

//tr[contains(@id, 'flight-')]/td[2]

正如上面提到的xpath,同样,您可以轻松地使用findElements查找所有航班详细信息,然后使用for循环执行相应的操作

List<WebElement> WebElements = driver.findElements(By.xpath("//tr[contains(@id, 'flight-')]/td[2]");

for(WebElement element : WebElements){
     //perform any operation like for click you can use
     element.getText();
}
List WebElements=driver.findElements(By.xpath(“//tr[contains(@id,'flight-'))]/td[2]”);
for(WebElement:WebElements){
//执行您可以使用的任何操作,如单击
元素getText();
}
上面的例子是用JAVA编写的,您也可以用C#编写


你为什么不一次获取所有航班的数据呢?你也可以共享我们需要获取数据的链接,这样我就可以看到元素是如何出现的等等。@Rastislav:将你的问题改为显示图片。我要拍摄文本。我需要日期。@RastislavSrnánek,作为回答者,很难猜测你的网站是什么样子以及如何显示的获取所需数据。使用适当的
HTML
code示例或页面
URL
更新您的问题,以获得更好的答案。确定后,您可以使用element.getText(),也更新了代码片段。请尝试。只是想一想,如果元素在frame/iframe或svg元素中,我已经观察到chrome和firefox驱动程序无法检测基于逻辑XPath的元素。虽然在本例中OP没有提到元素是在默认内容上还是在frame/iframe上。ThanksThanks各位,我还有一个问题,这是我的代码:我需要得到文本:“Axis Vega3”,我不使用类名和内容,因为它会改变。有什么解决方案吗?@Rastislavsrnaánek类
Axis
也会改变吗?不太可能。你可以使用
driver.FindElement(By.XPath(//div[@class='赞助商Axis'])).GetAttribute(“title”)
获取文本。顺便说一句,更多的问题应该作为新问题发布,而不是在评论中。是的,它正在发生变化。@RastislavSrnánek您应该发布新问题以及所有细节,这样会更容易帮助您。