【问题标题】:How to click input element based on text conditions using Selenium and Java如何使用 Selenium 和 Java 根据文本条件单击输入元素
【发布时间】:2020-08-11 07:39:52
【问题描述】:

我在 JAVA 上使用 selenium 和 junit5。我在 turna.com 上做测试。如何点击 Pegasus(Text) 上的输入按钮。

航空公司名称类型:

  • 飞马
  • 你的
  • 阿纳多卢杰特
<div class="item-domestic departure-flight rt-domestic-item flight" id="1028" style="">   
        <div class="col-sm-8">
            <div class="caption">
                <div class="airline-img-wrapper">                   
                </div>
                <div class="airline-tag-wrapper">
                    <div class="airline-name">Pegasus
                    </div>     
                </div>                
            </div> 
        </div>               
        <div class="col-sm-4 text-right amount-wrapper">
            <div class="price">               
            </div>
            <div class="button">
                <input type="button" class="from-in-button" value="Seç" txt="Seçili">
            </div>            
        </div>
</div>

我的代码:

WebElement airlinename= findElement(airline_name);
if(airlinename.getText()=="Pegasus")
{
    clickElement(fromBtn); //input button

}

我正在尝试:)

.airline-name[text="Pegasus"] , .from-in-button

问题:我无法点击输入按钮到(pegasus 文本标签)。

【问题讨论】:

  • 你在找java还是javascript?
  • 您是否尝试使用 Selenium-Java 单击 &lt;input type="button" class="from-in-button" value="Seç" txt="Seçili"&gt; 这个按钮?你能分享一下你到目前为止的尝试吗?
  • 是的。航空公司名称;有你的,anadolujet 和飞马。但我想点击飞马文本上的输入按钮。
  • 你应该展示你自己的代码并描述问题。 “我想要”不足以在 SO 上寻求帮助
  • if(airlinename.getText()=="Pegasus") { clickElement(fromBtn); }

标签: java selenium selenium-webdriver xpath webdriverwait


【解决方案1】:

要针对文本Pegasus点击&lt;input&gt;元素,您需要为elementToBeClickable()诱导WebDriverWait,您可以使用以下Locator Strategies

  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='airline-name' and contains(., 'Pegasus')]//following::div//input[@class='from-in-button' and @value='Seç']"))).click();
    
  • 浏览器快照(来自website):

【讨论】:

  • 未运行定位策略。我试了一下。您可以在turna.com/ucak-bileti/…查看网站
  • i 成功定位器。但这是非常糟糕的定位器策略。 //div[@class='airline-name' and contains(., 'Pegasus')]//parent::div//parent::div//parent::div//parent::div//div[ @class="col-sm-4 text-right amount-wrapper"]//div[@class="button"]//input[@class="from-in-button"]
  • @NurettinŞANSLI 您是否尝试使用我回答中的定位器?这对我来说恰到好处。查看更新的答案。
  • 这个 xpath 找到 anadolujet,thy on after pegasus。我通过添加到您的 xpath 来工作。
猜你喜欢
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
  • 2016-11-26
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
相关资源
最近更新 更多