.click对于Safari浏览器上位于iframe中的元素不起作用

时间:2019-05-24 12:16:53

标签: ruby selenium-webdriver safari webdriver watir

我正在使用Safari浏览器自动执行Web应用程序,并且无法单击iframe中存在的元素。相同的代码适用于chrome和Firefox。

我尝试了clickjavascript之类的不同方法,但似乎无济于事。此外,这些方法不会显示错误消息。它们成功执行,屏幕上无任何反应。我也尝试单击层次结构中的其他元素,但是没有运气。

以下是我用于此任务的版本:

红宝石2.6.0p0

selenium-webdriver:3.142.3

Safari:12.1.1

chromedriver:74.0.3729.6

geckodriver:v0.24.0

require 'selenium-webdriver'

@browser = Selenium::WebDriver.for :safari
@browser.get 'https://www.splashmath.com/math-skills/first-grade/addition/add-using-pictures-within-10?from_page=Home'
@browser.find_element(xpath: "//a[@title='Practice Add using Pictures within 10 Worksheet']").click

wait = Selenium::WebDriver::Wait.new(timeout: 20)

wait.until { @browser.find_element(id: 'sp-iframe') }
@browser.switch_to.frame('sp-iframe')
wait.until { @browser.find_element(xpath: "//div[@class='btn-choice pt-choice index-0']").displayed? }
sleep 5

# This is where nothing is happening:
@browser.find_element(xpath: "//div[@class='btn-choice pt-choice index-0']").click

我还尝试了以下代码:

x = @browser.find_element(xpath: "//div[@class='btn-choice pt-choice index-0']")
@browser.execute_script("arguments[0].click();", x) #=> Nothing happens
# This throws Selenium::WebDriver::Error::MoveTargetOutOfBoundsError

x = @browser.find_element(xpath: "//div[@class='btn-choice pt-choice index-0']") 
@browser.action.move_to(x).click.perform 

HTML:

enter image description here

0 个答案:

没有答案