gpt4 book ai didi

javascript - 如何在 selenium 上检测带有原始窗口链接的 iframe 选项卡窗口

转载 作者:行者123 更新时间:2023-11-30 21:19:18 26 4
gpt4 key购买 nike

Ifram

我的 iframe 选项卡有问题。我的网页在使用第 3 方链接打开的单独选项卡中有一个 iframe。我想通过每个选项卡来捕捉它,但没有任何方法可以做到。

HTML 代码:

<ul class="resp-tabs-list">
<li class="resp-tab-item resp-tab-active" aria-controls="tab_item-0" role="tab">
<a class="js-tab-list js-tab-1" data-source="https://www.adsdssas.com/property/individual/BC-2030877?isl=1" data-no="1" data-ga="0" target="iframe_1">
<img src="/themes/centralization/images/partners-tab-logo/rentalhomes-tab-logo.png" alt="RentalHomes.com" height="20" width="auto">
</a>
</li>

<li class="resp-tab-item" aria-controls="tab_item-1" role="tab">
<a class="js-tab-list js-tab-1" data-source="https://www.jdoasdadadqocy.com/click-8111003-11553823?url=https%3A%2F%2Fwww.vrasbo.com%2Fvacation-rentals%3Fq%3DDauphin%2BIsland%252C%2BAL%252C%2BUSA&amp;utm_campaign=RENTALHOMES&amp;sid=MTUwMTE0MTI4NDIwMi41LjUwLjQzLTM&amp;label=MTUwMTE0MTI4NDIwMi41LjUwLjQzLTM&amp;ft=1" data-no="1" data-ga="0" target="iframe_1">
<img src="/themes/centralization/images/partners-tab-logo/feed_logo_vrbo.png" alt="VRBO.Com" height="20" width="auto">
</a>
</li>

<li class="resp-tab-item" aria-controls="tab_item-2" role="tab">
<a class="js-tab-list js-tab-1" data-source="https://www.jdadsdoqocy.com/click-8111003-10859031?url=https%3A%2F%2Fwww.homeaway.com%2Fresults%2Fkeywords%3ADauphin%2BIsland%252C%2BAL%252C%2BUSA&amp;utm_campaign=RENTALHOMES&amp;sid=MTUwMTE0MTI4NDIwMi41LjUwLjQzLTM&amp;label=MTUwMTE0MTI4NDIwMi41LjUwLjQzLTM&amp;ft=1" data-no="1" data-ga="0" target="iframe_1">
<img src="/themes/centralization/images/partners-tab-logo/feed_logo_12.png" alt="HomeAway.Com" height="20" width="auto">
</a>
</li>

<li class="resp-tab-item" aria-controls="tab_item-3" role="tab">
<a class="js-tab-list js-tab-1" data-source="https://www.dddoaoa.com/click-8111003-11327743?url=https://www.asdasd.com/search.do?q-destination=Dauphin+Island%2C+AL%2C+USA&amp;utm_campaign=RENTALHOMES&amp;sid=MTUwMTE0MTI4NDIwMi41LjUwLjQzLTM&amp;label=MTUwMTE0MTI4NDIwMi41LjUwLjQzLTM&amp;ft=1" data-no="1" data-ga="0" target="iframe_1">
<img src="/themes/centralization/images/partners-tab-logo/feed_logo_14.png" alt="Hotel.Com" height="20" width="auto">
</a>
</li>
</ul>

我们将不胜感激任何类型的帮助

Thanks @anshul

我运行了你的代码,但它打印了 4 次相同的 url。我想获取 iframe url 和

@Test
public void DetailsPageSliderTAB_For_BC() throws InterruptedException{
wd.manage().window().maximize();
wd.get("http://192.168.2.116/check/");
wd.findElement(By.xpath(".//*[@id='Rentalhomes']/div/div/div/table/tbody[4]/tr[6]/td[1]/a")).click();

wd.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);
String HotelonBCP=wd.findElement(By.xpath(".//*[@class='air-bnb-checkbox checkbox']")).getText();
wd.findElement(By.xpath(".//*[@id='lightbox-pop']/div/div/div/div[2]/div/div[5]/div[2]/div[2]/div/a")).click();
wd.findElement(By.xpath(".//*[@id='start_now11']")).click();
Thread.sleep(200000);
Reporter.log("POP Under Name "+HotelonBCP);


for (String windows : wd.getWindowHandles()) {

wd.switchTo().window(windows);

if (wd.getCurrentUrl().startsWith("http://staging.rentalhomes.com")) {
List<WebElement> liElementList = wd.findElement(By.id("horizontalTabAffiliate")).findElement(By.xpath("//ul[contains(@class,'resp-tabs-list')]")).findElements(By.tagName("li"));

for (WebElement webElement : liElementList) {
// Based on the webElement perform operation
wd.findElement(By.xpath(".//*[@id='horizontalTabAffiliate']/ul/li[1]/a")).click();
System.out.println(wd.getCurrentUrl());
}
}
}
}


<li class="resp-tab-item" aria-controls="tab_item-1" role="tab">
<a class="js-tab-list js-tab-1" data-source="https://www.jdoqocy.com/click-8111003-11553823?url=p;ft=1" data-no="1" data-ga="0" target="iframe_1">
<img src="/themes/centralization/images/partners-tab-logo/feed_logo_vrbo.png" alt="VRBO.Com" height="20" width="auto">
</a>
</li>

最佳答案

你可以尝试这样的事情:

List<WebElement> liElementList = driver.findElement(By.id("horizontalTabAffiliate")).findElement(By.xpath("//ul[contains(@class,'resp-tabs-list')]")).findElements(By.tagName("li"));

for (WebElement webElement : liElementList) {
// Based on the webElement perform operation
}

解释: 1. 首先,我从 findElement(By.id("horizo​​ntalTabAffiliate")) 的父 div 元素定位它,这将使用它的 id 定位外部 div。

  1. 一旦找到 parenet div,您就可以开始定位您案例中的内部元素 innerElement 是一个 “ul”,根据 DOM,只有一个 ul 存在。findElement(By.xpath("//ul[contains(@class,'resp-tabs-list')]"))这将在父 div 的帮助下定位 ul 元素。

  2. 找到 ul 后,您可以获得最里面的 “li” 元素的列表。 findElements(By.tagName("li")) ,这将返回 li 元素的列表。因此,您将拥有位于上述面板上的所有选项卡,它们是您的第三方链接。

    1. 找到这些元素后,您就可以轻松地基于这些元素执行操作。对于您的情况,如果您只对点击“li”的第一个元素感兴趣,只需在您的 for loop() 中执行 webs.click();

注意 一旦找到 li 元素列表,您就可以用它做更多的事情。还要确保我在上面使用的类名、id、标记名是正确的并且与你的 DOM 匹配。

让我知道这是否可行,或者您需要更多详细信息。

关于javascript - 如何在 selenium 上检测带有原始窗口链接的 iframe 选项卡窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45344658/

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