如何用硒打开页脚中的链接
How to open links in footer with selenium
我是 Selenium 的新手,目前正在学习。我正在尝试在 selenium 中打开页脚链接,但它在 https://byjus.com/ or https://www.amazon.in 上不起作用 我已经尝试使用 Action class 以及 Javascript 将元素滚动到视图中。有人可以帮我实现它吗?提前致谢。
package WebApps;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class mmt {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver", "D:\Nav QA Workspace\Browser Drivers\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://byjus.com/");
WebElement footerDriver = driver.findElement(By.xpath("//div[@class='universal-footer']"));
WebElement links = footerDriver.findElement(By.xpath("//div/div/div/div/div[1]/ul"));
System.out.println(links.findElements(By.tagName("a")).size());
for (int i = 0; i < 5; i++) {
String linksToOpen = Keys.chord(Keys.CONTROL, Keys.ENTER);
System.out.println(links.findElements(By.tagName("a")).get(i).getText());
// System.out.println(links.findElements(By.tagName("li")).get(i).getText());
// links.findElements(By.tagName("a")).get(i).sendKeys(linksToOpen);
}
/*
* Amazon.in facing problem here too
*
*
* System.setProperty("webdriver.chrome.driver",
* "D:\Nav QA Workspace\Browser Drivers\chromedriver.exe"); WebDriver driver
* = new ChromeDriver(); driver.manage().timeouts().implicitlyWait(15,
* TimeUnit.SECONDS); driver.get("https://www.amazon.in/"); //
* div.makeFlex.appendBottom40.footerLinks WebElement footerDriver =
* driver.findElement(By.cssSelector(
* "div.navFooterVerticalColumn.navAccessibility"));
* System.out.println(footerDriver.isDisplayed()); WebElement links =
* footerDriver.findElement(By.xpath("//div/div[1]/ul"));
* System.out.println(links.findElements(By.tagName("a")).size());
*
* for(int i=0;i<links.findElements(By.tagName("a")).size();i++) { String
* linksToOpen = Keys.chord(Keys.CONTROL,Keys.ENTER);
* System.out.println(links.findElements(By.tagName("a")).get(i).isEnabled());
* System.out.println(links.findElements(By.tagName("li")).get(i).getText()); //
* links.findElements(By.tagName("a")).get(i).sendKeys(linksToOpen); }
*/
}
}
迭代这个xpath绰绰有余"//div[@class='row footer-align footer-mobile-res']//div[1]//ul[1]//a"
我已经通过 WATIR 完成了,你可以在 Java Selenium
中做同样的事情
require 'watir'
b=Watir::Browser.new
b.goto 'https://byjus.com/'
b.elements(xpath: "//div[@class='row footer-align footer-mobile-res']//div[1]//ul[1]//a").each do |a|
p a.text
end
如果您想单击这些链接并在另一个选项卡中打开,那么
b.elements(xpath: "//div[@class='row footer-align footer-mobile-res']//div[1]//ul[1]//a").each do |a|
a.click(:control, :enter)
end
输出
"CBSE"
"ICSE"
"CAT"
"IAS"
"JEE"
"NEET"
"Commerce"
"JEE Main"
"NCERT"
"JEE Advanced"
"IAS Coaching"
"CBSE Sample Papers"
"CBSE Question Papers"
我使用不同的定位器类型 XPath 进行了测试。它完全可以正常工作,没有任何错误。您会尝试使用 XPath 而不是 CSS 单击吗?
driver.get("https://www.amazon.in/");
WebElement footerDriver = driver.findElement(By.xpath("//div[@class='navFooterVerticalRow navAccessibility']"));
footerDriver.findElement(By.xpath(".//a[text()='About Us']")).click();
我尝试了 Byju 网站上的“联系我们”按钮,它对我有用。您需要向下滚动 到该元素,然后单击 它们。
By contactUsLink = By.xpath("//a[text()='Contact Us']");
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollIntoView(true);",
driver.findElement(contactUsLink));
log.info("Scrolling down");
driver.findElement(contactUsLink).click();
谢谢大家的回答。我错误地穿越到了 child。这是我的做法,我仅使用 CSS 选择器从 parent 遍历到 child 并且它起作用了。我发布代码是为了帮助某人。
package WebApps;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class mmt {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver", "D:\QA Workspace\Browser Drivers\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://byjus.com/");
WebElement footerDriver = driver
.findElement(By.cssSelector("div[class='row footer-align footer-mobile-res']" + "> div:nth-child(1)"));
footerDriver.findElement(By.xpath("//div[1]/ul[1]"));
int links = footerDriver.findElements(By.tagName("a")).size();
for (int i = 0; i < links; i++) {
String linksToOpen = Keys.chord(Keys.CONTROL, Keys.ENTER); //
System.out.println(footerDriver.findElements(By.tagName("a")).get(i).getText()); // //
System.out.println(footerDriver.findElements(By.tagName("li")).get(i).getText()); //
footerDriver.findElements(By.tagName("a")).get(i).sendKeys(linksToOpen);
}
// Amazon.in facing problem here too
System.setProperty("webdriver.chrome.driver", "D:\QA Workspace\Browser Drivers\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://www.amazon.in/");
// div.makeFlex.appendBottom40.footerLinks
WebElement footerDriver = driver
.findElement(By.cssSelector("div[class='navFooterVerticalRow navAccessibility'] > div:nth-child(1)"));
int links = footerDriver.findElements(By.tagName("a")).size();
//
for (int i = 0; i < links; i++) {
String linksToOpen = Keys.chord(Keys.CONTROL, Keys.ENTER);
footerDriver.findElements(By.tagName("a")).get(i).sendKeys(linksToOpen);
}
}
}
我是 Selenium 的新手,目前正在学习。我正在尝试在 selenium 中打开页脚链接,但它在 https://byjus.com/ or https://www.amazon.in 上不起作用 我已经尝试使用 Action class 以及 Javascript 将元素滚动到视图中。有人可以帮我实现它吗?提前致谢。
package WebApps;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class mmt {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver", "D:\Nav QA Workspace\Browser Drivers\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://byjus.com/");
WebElement footerDriver = driver.findElement(By.xpath("//div[@class='universal-footer']"));
WebElement links = footerDriver.findElement(By.xpath("//div/div/div/div/div[1]/ul"));
System.out.println(links.findElements(By.tagName("a")).size());
for (int i = 0; i < 5; i++) {
String linksToOpen = Keys.chord(Keys.CONTROL, Keys.ENTER);
System.out.println(links.findElements(By.tagName("a")).get(i).getText());
// System.out.println(links.findElements(By.tagName("li")).get(i).getText());
// links.findElements(By.tagName("a")).get(i).sendKeys(linksToOpen);
}
/*
* Amazon.in facing problem here too
*
*
* System.setProperty("webdriver.chrome.driver",
* "D:\Nav QA Workspace\Browser Drivers\chromedriver.exe"); WebDriver driver
* = new ChromeDriver(); driver.manage().timeouts().implicitlyWait(15,
* TimeUnit.SECONDS); driver.get("https://www.amazon.in/"); //
* div.makeFlex.appendBottom40.footerLinks WebElement footerDriver =
* driver.findElement(By.cssSelector(
* "div.navFooterVerticalColumn.navAccessibility"));
* System.out.println(footerDriver.isDisplayed()); WebElement links =
* footerDriver.findElement(By.xpath("//div/div[1]/ul"));
* System.out.println(links.findElements(By.tagName("a")).size());
*
* for(int i=0;i<links.findElements(By.tagName("a")).size();i++) { String
* linksToOpen = Keys.chord(Keys.CONTROL,Keys.ENTER);
* System.out.println(links.findElements(By.tagName("a")).get(i).isEnabled());
* System.out.println(links.findElements(By.tagName("li")).get(i).getText()); //
* links.findElements(By.tagName("a")).get(i).sendKeys(linksToOpen); }
*/
}
}
迭代这个xpath绰绰有余"//div[@class='row footer-align footer-mobile-res']//div[1]//ul[1]//a"
我已经通过 WATIR 完成了,你可以在 Java Selenium
中做同样的事情require 'watir'
b=Watir::Browser.new
b.goto 'https://byjus.com/'
b.elements(xpath: "//div[@class='row footer-align footer-mobile-res']//div[1]//ul[1]//a").each do |a|
p a.text
end
如果您想单击这些链接并在另一个选项卡中打开,那么
b.elements(xpath: "//div[@class='row footer-align footer-mobile-res']//div[1]//ul[1]//a").each do |a|
a.click(:control, :enter)
end
输出
"CBSE"
"ICSE"
"CAT"
"IAS"
"JEE"
"NEET"
"Commerce"
"JEE Main"
"NCERT"
"JEE Advanced"
"IAS Coaching"
"CBSE Sample Papers"
"CBSE Question Papers"
我使用不同的定位器类型 XPath 进行了测试。它完全可以正常工作,没有任何错误。您会尝试使用 XPath 而不是 CSS 单击吗?
driver.get("https://www.amazon.in/");
WebElement footerDriver = driver.findElement(By.xpath("//div[@class='navFooterVerticalRow navAccessibility']"));
footerDriver.findElement(By.xpath(".//a[text()='About Us']")).click();
我尝试了 Byju 网站上的“联系我们”按钮,它对我有用。您需要向下滚动 到该元素,然后单击 它们。
By contactUsLink = By.xpath("//a[text()='Contact Us']");
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollIntoView(true);",
driver.findElement(contactUsLink));
log.info("Scrolling down");
driver.findElement(contactUsLink).click();
谢谢大家的回答。我错误地穿越到了 child。这是我的做法,我仅使用 CSS 选择器从 parent 遍历到 child 并且它起作用了。我发布代码是为了帮助某人。
package WebApps;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class mmt {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver", "D:\QA Workspace\Browser Drivers\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://byjus.com/");
WebElement footerDriver = driver
.findElement(By.cssSelector("div[class='row footer-align footer-mobile-res']" + "> div:nth-child(1)"));
footerDriver.findElement(By.xpath("//div[1]/ul[1]"));
int links = footerDriver.findElements(By.tagName("a")).size();
for (int i = 0; i < links; i++) {
String linksToOpen = Keys.chord(Keys.CONTROL, Keys.ENTER); //
System.out.println(footerDriver.findElements(By.tagName("a")).get(i).getText()); // //
System.out.println(footerDriver.findElements(By.tagName("li")).get(i).getText()); //
footerDriver.findElements(By.tagName("a")).get(i).sendKeys(linksToOpen);
}
// Amazon.in facing problem here too
System.setProperty("webdriver.chrome.driver", "D:\QA Workspace\Browser Drivers\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://www.amazon.in/");
// div.makeFlex.appendBottom40.footerLinks
WebElement footerDriver = driver
.findElement(By.cssSelector("div[class='navFooterVerticalRow navAccessibility'] > div:nth-child(1)"));
int links = footerDriver.findElements(By.tagName("a")).size();
//
for (int i = 0; i < links; i++) {
String linksToOpen = Keys.chord(Keys.CONTROL, Keys.ENTER);
footerDriver.findElements(By.tagName("a")).get(i).sendKeys(linksToOpen);
}
}
}