我是Selenium的新用户。我正在尝试根据“href”属性选择链接。我无法在此处使用XPath表达式,因为每次加载页面时,链接都会在页面中移动。
9wbgstp71#
使用XPath表达式 //a[contains(@href,'yourhref')] 和 by.xpath 或类似的CSS选择器。当使用 // 时,它意味着一个相对XPath表达式,因此无论是什么层次结构,如果您的 href 属性是唯一的,它都可以为您完成这项工作。
yacmzcpb2#
您可以使用By.linkText或By.partialLinkText,例如<a href="http://www.google.com/search?q=cheese">search for cheese</a>>WebElement cheese = driver.findElement(By.partialLinkText("cheese"));这个例子是从这里摘录的
By.linkText
By.partialLinkText
<a href="http://www.google.com/search?q=cheese">search for cheese</a>>
WebElement cheese = driver.findElement(By.partialLinkText("cheese"));
qlzsbp2j3#
可以使用this XPath构造方法或以下方法。
public void clickLink(WebDriver driver) { List<WebElement> aList = driver.findElements(By.tagName("a")); for (WebElement el : aList) { // if (el.getAttribute("href").contains("your href partial value") if (el.getAttribute("href") .equalsIgnoreCase("your full hreff text")) { el.click(); break; } } }
根据需要使用 if 条件。可以是部分比较,也可以是完全比较。
rdrgkggo4#
使用CSS选择器。示例:
driver.findElement(By.cssSelector("a[href=(your href)]")
4条答案
按热度按时间9wbgstp71#
使用XPath表达式 //a[contains(@href,'yourhref')] 和 by.xpath 或类似的CSS选择器。
当使用 // 时,它意味着一个相对XPath表达式,因此无论是什么层次结构,如果您的 href 属性是唯一的,它都可以为您完成这项工作。
yacmzcpb2#
您可以使用
By.linkText
或By.partialLinkText
,例如<a href="http://www.google.com/search?q=cheese">search for cheese</a>>
WebElement cheese = driver.findElement(By.partialLinkText("cheese"));
这个例子是从这里摘录的
qlzsbp2j3#
可以使用this XPath构造方法或以下方法。
根据需要使用 if 条件。可以是部分比较,也可以是完全比较。
rdrgkggo4#
使用CSS选择器。示例: