Java Selenium - 似乎无法 select 一个元素
Java Selenium - Can't seem to select an element
我正在尝试 select 电子邮件 href 来获取文本,但无论我使用什么 select 离子来尝试 select 电子邮件,我的 selection 似乎不起作用,我很好奇还有哪些其他方法可以解决此问题。
我已经使用 absolute
和 relative xpath
、CSS selector
和 id
来尝试获取电子邮件。我试过同时使用 visibilityOfElementLocated
和 elementToBeClickable
都无济于事。这是我当前的迭代,仅供参考(说明我的 cssSelector 和 xpath selector):
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".email")));
String hire_email = driver.findElement(By.xpath(".//*[@id='information-row-0']/div/div/div[2]/div/div[1]/div")).getText();
每当我 运行 自动化,当它到达电子邮件步骤时,它会在超时前等待 15 秒,这清楚地表明它没有看到该元素。
我使用 Firebug 和 Firepath 作为 xpath,所以我知道我的 xpath 在尝试 select 最让我困惑的元素时没有错。什么可能导致这个元素看不见,我可以尝试做些什么来解决这个问题?如果需要遗漏其他相关信息,请告诉我,如果可以,我会提供。提前致谢。
根据要求,这里是邮件所在table中的tr和td信息...(抱歉,它看起来很丑,直接从Firefox复制)
<tr class="information-row opened">
<td class="information-row opened" colspan="8">
<div id="information-row-0">
<div class="information-row-shell" style="overflow: visible; height: 238px;">
<div class="minimal-row row-fluid">
<div class="ja-pulse-container">
<div class="mrg-10 pull-left ja-pulse" style="display: block;">
</div>
<div class="information-row-rest row-fluid">
<div class="row-fluid">
<div class="span4 contact-container row-fluid">
<div class="caption">
<address>
<div class="full-name">
<span class="full-address">
<br>
<span class="full-address"> lanse, MI 49946 </span>
<hr>
<i class="icon icon-mobile-phone"></i>
<abbr title="Phone">Primary:</abbr>
<span class="tel">(432) 777-4444</span>
<br>
<i class="icon icon-phone"></i>
<abbr title="Additional phone">Secondary:</abbr>
<span class="tel">N/A</span>
<br>
<i class="icon icon-shield"></i>
<abbr title="Social Security Number"> SSN: </abbr>
<span class="ssn">(removed, even though this is a fake testing profile)</span>
<br>
<br>
<a class="email" href="mailto:alaiaia@lssiss.com">
<i class="icon icon-envelope"></i>
<span class="email">alaiaia@lssiss.com</span> <!--- I want to grab this --->
</a>
</address>
</div>
你有没有抛出任何异常?如果该元素不可见,则将抛出 NoSuchElementException。除此之外,我建议使您的 xpath 更具可读性,如下所示:
String emailAddress = driver.findElement(By.xpath("//span[@class='email']")).getText();
这样能不定位吗?
driver.findElement(By.xpath("//span[@class='email']"));
我正在尝试 select 电子邮件 href 来获取文本,但无论我使用什么 select 离子来尝试 select 电子邮件,我的 selection 似乎不起作用,我很好奇还有哪些其他方法可以解决此问题。
我已经使用 absolute
和 relative xpath
、CSS selector
和 id
来尝试获取电子邮件。我试过同时使用 visibilityOfElementLocated
和 elementToBeClickable
都无济于事。这是我当前的迭代,仅供参考(说明我的 cssSelector 和 xpath selector):
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".email")));
String hire_email = driver.findElement(By.xpath(".//*[@id='information-row-0']/div/div/div[2]/div/div[1]/div")).getText();
每当我 运行 自动化,当它到达电子邮件步骤时,它会在超时前等待 15 秒,这清楚地表明它没有看到该元素。
我使用 Firebug 和 Firepath 作为 xpath,所以我知道我的 xpath 在尝试 select 最让我困惑的元素时没有错。什么可能导致这个元素看不见,我可以尝试做些什么来解决这个问题?如果需要遗漏其他相关信息,请告诉我,如果可以,我会提供。提前致谢。
根据要求,这里是邮件所在table中的tr和td信息...(抱歉,它看起来很丑,直接从Firefox复制)
<tr class="information-row opened">
<td class="information-row opened" colspan="8">
<div id="information-row-0">
<div class="information-row-shell" style="overflow: visible; height: 238px;">
<div class="minimal-row row-fluid">
<div class="ja-pulse-container">
<div class="mrg-10 pull-left ja-pulse" style="display: block;">
</div>
<div class="information-row-rest row-fluid">
<div class="row-fluid">
<div class="span4 contact-container row-fluid">
<div class="caption">
<address>
<div class="full-name">
<span class="full-address">
<br>
<span class="full-address"> lanse, MI 49946 </span>
<hr>
<i class="icon icon-mobile-phone"></i>
<abbr title="Phone">Primary:</abbr>
<span class="tel">(432) 777-4444</span>
<br>
<i class="icon icon-phone"></i>
<abbr title="Additional phone">Secondary:</abbr>
<span class="tel">N/A</span>
<br>
<i class="icon icon-shield"></i>
<abbr title="Social Security Number"> SSN: </abbr>
<span class="ssn">(removed, even though this is a fake testing profile)</span>
<br>
<br>
<a class="email" href="mailto:alaiaia@lssiss.com">
<i class="icon icon-envelope"></i>
<span class="email">alaiaia@lssiss.com</span> <!--- I want to grab this --->
</a>
</address>
</div>
你有没有抛出任何异常?如果该元素不可见,则将抛出 NoSuchElementException。除此之外,我建议使您的 xpath 更具可读性,如下所示:
String emailAddress = driver.findElement(By.xpath("//span[@class='email']")).getText();
这样能不定位吗?
driver.findElement(By.xpath("//span[@class='email']"));