gpt4 book ai didi

java - 使用 selenium 在页面之间导航 - Java

转载 作者:行者123 更新时间:2023-12-01 16:53:40 24 4
gpt4 key购买 nike

我浏览链接列表,逐个单击它们,转到链接页面并实现需要执行的操作,然后返回到列表以单击下一个链接,它运行良好.

我现在需要的是到达链接的末尾,即循环结束的地方, Selenium 单击前进按钮转到下一页,并再次完成该页面的链接计数并再次开始循环。

我无法让 selenium 单击移动,因为它说 click(); 命令您不能在 webelento 中使用。

The method click () is undefined for the type List < WebElement >

list

这是 HTML 结构:

<div id="results-pagination">

<h2 id="pagination-heading">Pagination</h2>

<ul class="pagination">

<li class="prev">
<a class="page-link" href="url" title="back" data-li-page="1">&lt; back</a>
</li>

<li class="link">
<a class="page-link" href="url" title="page 2" data-li-page="2">2</a>
</li>

<li class="next">
<a class="page-link" href="next" title="next" data-li-page="next"></a>
</li>

</ul>
</div>

Selenium 代码:

List<org.openqa.selenium.WebElement> numberpages= driver.findElements(By.className("page-link"));
System.out.println("numberpages : " + numerospaginas.size());

List<org.openqa.selenium.WebElement> links= driver.findElements(By.linkText("to connect"));
System.out.println("Count to connect : " + links.size());

Thread.sleep(2000);

for(int i=0;i<5;i++){
links= driver.findElements(By.linkText("to connect"));
links.get(i).click();
Thread.sleep(2000);
boolean convite = driver.getPageSource().contains("iweReconnectSubmit");

if(invite == true){

Thread.sleep(2000);

boolean error = driver.getPageSource().contains("message:");

do{
//action
By tipoPlano = By.cssSelector("[name='reason'][value='IF'][type='radio']");
driver.findElement(tipoPlano).click();
}while(error == true);

//submit
driver.findElement(By.name("iweReconnectSubmit")).click();
Thread.sleep(2000);

WebDriverWait confirmacaoadicao = new WebDriverWait(driver, 10);
confirmacaoadicao.until(ExpectedConditions.textToBePresentInElement(By.id("control_gen_3"), "invite for: "));


String pessoa = driver.findElement(By.xpath("//div[@id='control_gen_3']//a")).getText();
System.out.println(pessoa + " add" );

driver.navigate().to(list_of_links);

WebDriverWait retorno = new WebDriverWait(driver, 10);
retorno.until(ExpectedConditions.elementToBeClickable(By.linkText("To connect")));

}
}

//does not work
driver.findElements(By.linkText("next")).click();

//does not work
((org.openqa.selenium.WebElement)driver.findElements(By.linkText("next"))).click();

image

最佳答案

您的点击功能不会出现,因为driver.findElements(By.linkText("next"))返回一个列表 List<WebElement>并且无法在列表对象上调用 click() 。

您可以调用 click 方法来迭代列表:

List<WebElement> WebElementList = driver.findElements(By.linkText("next")); 
for(WebElement element : WebElementList){
element.click(); // click can be called on object of WebElement
}

关于java - 使用 selenium 在页面之间导航 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35747252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com